package com.gengzp.mq.server.manager;

import com.gengzp.mq.server.model.message.entity.MqMessage;

import java.util.List;

/**
 * @ClassName MqResendMessageManager
 * @Description 消息队列重发消息管理器
 * @Author gengzp
 * @Date 2025/9/4 11:16
 */
public interface MqResendMessageManager {

    /**
     * 创建重发消息任务
     * <p> 当消息超时未确认或消费者回传消费失败时, 会自动对消息进行重发 </p>
     * <p> 每次重发都会延迟一段时间, 初始为30秒, 第二次60秒, 第三次120秒...... 依次翻倍 </p>
     * <p> 当重发此处超过8次时, 再次重发需要等待超过1小时, 则直接不再重发, 加入死信队列等待人工介入 </p>
     */
    void createResendMessageJob();

    /**
     * 重发消息
     *
     * @param mqMessages 要重发的消息集合
     */
    void resendMessages(List<MqMessage> mqMessages);

}
